'use strict';
/**
 * author：小小游 --- allen
 * date：2018.02.03
 * lastUpdateDate：2018.02.03
 * description：let / const的基本用法和区别
 */

/**
  * 1.var是属于函数级别作用域变量的声明，它是会提升到整个函数级别之上或全局的
  * 2.let是属于块级作用域变量的声明，只能在当前声明的块级作用域内或当前声明
  *   的子级的块级作用域访问
  */

// 函数变量预解析问题
// function aaa () {
//     console.log(a);
//     /**
//      * 使用var声明的变量js内部是会做一个预解析的，如下：
//      * fucntion aaa () {
// *          var a;
// *          console.log(a);
// *          a = 12;
//      * }
//      *
//      * aaa ();  那么此时a的值就是undefined
//      *
//      */
//     var a = 12;
// }
//
// aaa ();

// function aaa () {
//      如果不写var a = 12;那么a的值就不是undefined了，就是a is not defined
//     console.log(a);
//      var a = 12;
// }
//
// aaa ();

function aaa () {
    console.log(a);
    // 那么使用let声明的变量js是不会做预解析的，所以此时a的值就是a is not defined
    let a = 12;
}

aaa ();
